# 1.什么是格式化字符串
# 支持使用占位符进行填值拼接的操作就是格式化字符串

# 2.程序
salary = input('请输入薪资：')

# 计算出缴税额，存入变量tax
tax = int(salary) * 25 / 100
# 转化为字符串，方便下面的字符串拼接
taxStr = str(tax)

# 计算出税后工资，存入变量 aftertax
aftertax = int(salary) * 75 / 100
# 转化为字符串，方便下面的字符串拼接
aftertaxStr = str(aftertax)

# 3.普通字符串拼接
# 针对上述程序使用普通字符串拼接的方法打印 '税前薪资 10000元，缴税：2500元，税后薪资：7500元'
print('税前薪资：' + salary + '元，缴税：' + taxStr + '元，税后薪资：' + aftertaxStr + '元')

# 4.printf 风格
# 4.1.使用占位符和元组格式化
# %s 是占位符
# 简单说 %s 位置填入的结果，就是调用 str 函数的返回值。
# str() 内置函数的参数 可以是任何类型的对象，比如：字符串、 整数、 浮点数、列表、元组 等等，都可以。
# 所以 %s 为占位符， 对应的格式化对象， 不仅仅是字符串，还可以是整数、 浮点数、列表、元组 等等。
# (salary, tax, aftertax) 是元组，里面依次存放需要填入到 %s 位置 的数据
# 格式化字符串里面占位符的个数 必须 和 后面对应的格式化对象个数相同
print('税前薪资：%s元，缴税：%s元，税后薪资：%s元' % (salary, tax, aftertax))

# 4.2.指定宽度和对齐
# 如果我们需要将下面这样的3个字符串进行格式化
print('税前薪资：%s 元' % 100000)
print('税前薪资：%s 元' % 10000)
print('税前薪资：%s 元' % 1000)

# 得到的结果如下：
# 税前薪资：100000 元
# 税前薪资：10000 元
# 税前薪资：1000 元

# 会发现，由于被格式化的数字对应的字符串长度不同，导致结果不对齐。
# 这样的输出结果显得不够美观
# 我们可以指定格式化结果的字符串长度，比如我想要格式化结果至少10个字符，不足10个字符补空格，就可以这样
print('税前薪资：%10s 元' % 100000)
print('税前薪资：%10s 元' % 10000)
print('税前薪资：%10s 元' % 1000)

# %10s 中的 10 就是指定了格式化结果至少10个字符。
# 得到的结果就是：
# 税前薪资：    100000 元
# 税前薪资：     10000 元
# 税前薪资：      1000 元

# 如果我们希望是左边对齐，而不是右边对齐，就可以加一个 ```-``` ，像这样
print('税前薪资：%-10s 元' % 100000)
print('税前薪资：%-10s 元' % 10000)
print('税前薪资：%-10s 元' % 1000)

# 可以得到如下结果：
# 税前薪资：100000     元
# 税前薪资：10000      元
# 税前薪资：1000       元


# 4.3.%d 和 %f
# 占位符除了 %s ，还有其它的一些。
# 常见的是 %d 和 %f 。
# %d 用在 格式化对象 是 整数的情况 ，比如：
# '税前薪资：%d 元' % 10000
# %f 用在 格式化对象 是 浮点数的情况，比如：
# '税前薪资：%f 元' % 10000.32
# 前面我们说过了 %s 也可以用来格式化 整数和 浮点数，但是有些情况下， %d %f 有特别的用处。

# 比如，打印数字的时候，我们指定宽度，而且希望不足宽度 补零 ，而不是补空格，就可以这样
print('税前薪资：%010d 元' % 100000)
print('税前薪资：%010d 元' % 10000)
print('税前薪资：%010d 元' % 1000)

# 可以得到如下结果：
# 税前薪资：0000100000 元
# 税前薪资：0000010000 元
# 税前薪资：0000001000 元

# 对于小数的格式化，通常使用 %f，如下
print('税前薪资：%010f 元' % 1000.4522)
print('税前薪资：%010f 元' % 1008.6621)
print('税前薪资：%010f 元' % 1009.3351)

# 可以得到如下结果：
# 税前薪资：1000.452200 元
# 税前薪资：1008.662100 元
# 税前薪资：1009.335100 元

# 如果我们想保留小数点后面2位数字，就可以加上 .2 像这样
print('税前薪资：%010.2f 元' % 1000.4522)
print('税前薪资：%010.2f 元' % 1008.6621)
print('税前薪资：%010.2f 元' % 1009.3351)

# 可以得到如下结果：
# 税前薪资：0001000.45 元
# 税前薪资：0001008.66 元
# 税前薪资：0001009.34 元

